package com.ly.cloud.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.plugins.Page;
import com.ly.cloud.dto.ApprovalDetailDto;
import com.ly.cloud.vo.ApprovalCategoryVo;
import com.ly.cloud.vo.ApprovalDetailVo;
import com.ly.cloud.vo.RoleVo;

/** 
 * Class Name: ApprovalService  
 * Description: 审批流程服务
 * 审批流程服务接口
 * @author: siqi
 * @mail: siqi@ly-sky.com 
 * @date: 2018年12月7日
 * @version: 1.0
 *
 */  
public interface ApprovalService {
	/** 
	 * Method Name:  queryPageAprvCategory
	 * Description:  
	 * 分页查询审批流程类别
	 * @param page 页数
	 * @param name 流程名称
	 * @return 
	 * @return Page<ApprovalCategoryVo>	
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月7日
	 */
	Page<ApprovalCategoryVo> queryPageAprvCategory(@Param("depId")Page<ApprovalCategoryVo> page,@Param("name")String name);
	
	/** 
	 * Method Name:  queryApprovalDetailByCategoryID
	 * Description:  
	 * 查询审批流程类别
	 * @param categoryID 审批流程ID
	 * @return 
	 * @return Page<ApprovalDetailVo>	
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月7日
	 */
	List<ApprovalDetailVo> queryApprovalDetailByCategoryID(@Param("categoryID")Long categoryID);
	
	/** 
	 * Method Name:  queryApprovalDetailByCategoryID
	 * Description:  
	 * 查询审批流程类别
	 * @param categoryID 审批流程ID
	 * @return 
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月7日
	 */
	boolean updateCategoryIsEnable(@Param("is_enable")Long is_enable,@Param("categoryID")Long categoryID);
	
	/** 
	 * Method Name:  insetApprovalDetail
	 * Description:  
	 * 新增审批流程步骤
	 * @param dto
	 * @return 
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月7日
	 */
	boolean insertApprovalDetail(@Param("loginUserName")String userName,@Param("approvaldatail")ApprovalDetailDto dto);
	
	/** 
	 * Method Name:  insetApprovalDetail
	 * Description:  
	 * 设置审批步骤是否启用
	 * @param dto
	 * @return 
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月7日
	 */
	boolean updateDetailIsEnable(@Param("is_enable")Long is_enable,@Param("detailID")Long detailID);
	
	/**
	 * 查询角色列表
	 * @return
	 */
	List<RoleVo> queryRolesList();
	
	/**
	 * Method Name:  updateDetailById
	 * Description:  
	 * 修改审批流程步骤
	 * @param dto
	 * @return 
	 * @exception 	
	 * @author siqi
	 * @mail siqi@ly-sky.com
	 * @date: 2018年12月13日
	 */
	boolean updateDetailById(@Param("loginUserName")String userName,@Param("approvaldatail")ApprovalDetailDto dto);

	/**
	 * 审批初始化，提交业务时调用
	 * @param ywzj
	 * @param tableName
	 * @return 返回的信息(0:成功,1:未定义流程,2:不启用审批流程,直接通过)
	 */
	String initApproval(String ywzj, String tableName);

	/**
	 * 审批处理过程
	 * @param ywzj	
	 * @param tableName
	 * @param sprbh
	 * @param spyj
	 * @param spzt
	 * @return 返回的审批状态信息(8:审批不通过,9审批通过)
	 */
	String processApproval(String ywzj, String tableName, String sprbh, String spyj, String spzt);
}
